package com.xb.system.service;

import com.xb.model.domain.entity.PaymentOrder;
import java.math.BigDecimal;
import java.util.Map;

public interface PaymentService {
    
    /**
     * 创建支付订单
     * @param userId 用户ID
     * @param amount 支付金额
     * @param paymentType 支付类型（1:微信支付，2:支付宝支付）
     * @param packageType 套餐类型
     * @param packagePoints 套餐积分
     * @param packageDuration 套餐时长
     * @return 支付订单信息
     */
    PaymentOrder createPaymentOrder(Long userId, BigDecimal amount, Integer paymentType, 
                                    String packageType, Integer packagePoints, String packageDuration);
    
    /**
     * 获取微信支付二维码
     * @param orderNo 订单号
     * @return 支付二维码URL
     */
    String getWechatPayQrCode(String orderNo);
    
    /**
     * 获取支付宝支付二维码
     * @param orderNo 订单号
     * @return 支付二维码URL
     */
    String getAlipayPayQrCode(String orderNo);
    
    /**
     * 处理微信支付回调
     * @param notifyData 回调数据
     * @return 处理结果
     */
    boolean handleWechatPayNotify(Map<String, String> notifyData);
    
    /**
     * 处理支付宝支付回调
     * @param notifyData 回调数据
     * @return 处理结果
     */
    boolean handleAlipayNotify(Map<String, String> notifyData);
    
    /**
     * 查询支付订单状态
     * @param orderNo 订单号
     * @return 支付订单信息
     */
    PaymentOrder queryPaymentOrder(String orderNo);
    
    /**
     * 取消支付订单
     * @param orderNo 订单号
     * @return 是否成功
     */
    boolean cancelPaymentOrder(String orderNo);
    
    /**
     * 查询用户支付记录
     * @param userId 用户ID
     * @return 支付记录列表
     */
    java.util.List<PaymentOrder> getUserPaymentRecords(Long userId);
    
    /**
     * 检查用户是否已购买过19.9套餐
     * @param userId 用户ID
     * @return true-已购买，false-未购买
     */
    boolean hasUserPurchasedSpecialPackage(Long userId);
    
    /**
     * 补偿处理已支付但未处理充值的订单
     * @param orderNo 订单号
     * @return 处理结果
     */
    boolean compensateOrder(String orderNo);
    
    /**
     * 更新订单信息
     * @param order 订单
     * @return 是否成功
     */
    boolean updateOrder(PaymentOrder order);
}